// 导入 axios 使用
import axios from 'axios'

export default {
  // 开启命名空间
  namespaced: true,
  state: () => ({
    // 刷新页面时从 localStorage 取 token
    // token: localStorage.getItem('token')
    token: '',
    userInfo: {}
  }),
  mutations: {
    updateToken (state, token) {
      // 存入 state
      state.token = token
      // 需要同时存入 localStorage
      // localStorage.setItem('token', token)
    },
    updateUserInfo (state, userInfo) {
      state.userInfo = userInfo
    }
  },
  actions: {
    // 上下文对象: store 对象
    async getUserInfo (context) {
      // 发请求获取数据
      // this.$http('/my/userinfo')
      // console.log(this) // 是 store 对象, 所以没有 Vue 原型上的属性和方法
      // console.log(context) // 同样无法使用 Vue 原型的属性和方法
      const { data: res } = await axios.get('/my/userinfo')
      // console.log(res)
      if (res.code !== 0) return
      context.commit('updateUserInfo', res.data)
    }
  },
  getters: {}
}
